/* eslint valid-jsdoc: "off" */

'use strict';
const path = require('path')
/**
 * @param {Egg.EggAppInfo} appInfo app info
 */
module.exports = appInfo => {
    /**
     * built-in config
     * @type {Egg.EggAppConfig}
     **/
    const config = exports = {};

    // use for cookie sign key, should change to your own and keep security
    config.keys = appInfo.name + '_1632201399849_1682';
    config.report_data_type = 'redis'; // redis kafka mongodb

    // add your middleware config here
    config.is_web_task_run = true;
    // redis配置
    config.redis = {
        client: {
            port: 6379, // Redis port
            host: '127.0.0.1', // Redis host
            password: '',
            db: 0,
        },
    };
    // shell重启（可选填）
    config.shell_restart = {
        // mongodb重启shell,如果mongodb进程kill了，请求不了数据库时重启
        mongodb: [path.resolve(__dirname, '../mongodb-restart.sh')],
        // node.js服务重启shell,mongodb重启时，数据库连接池有可能会断，这时需要重启服务
        // servers: [ path.resolve(__dirname, '../servers-restart.sh') ],
    };

    // mongoose配置
    config.mongoose = {
        // 单机部署
        url: 'mongodb://127.0.0.1:27017/monitor',// monitor_list
        options: {
            autoReconnect: true,
            poolSize: 2,
        },
    }
    config.middleware = [];
    // 使用redis储存原始数据时，相关配置 （report_data_type=redis生效）
    config.redis_consumption = {
        // 定时任务执行时间
        task_time: '*/20 * * * * *',
        // 每次定时任务消费线程数(web端)
        thread_web: 100,
        // 每次定时任务消费线程数(wx端)
        thread_wx: 100,
        // 消息队列池限制数, 0：不限制 number: 限制条数，高并发时服务优雅降级方案
        total_limit_web: 10000,
        total_limit_wx: 10000,
    };
    // add your user config here
    const userConfig = {
        // myAppName: 'egg',
    };
    /**
     * 安全性
     */
    config.security = {
        domainWhiteList: [ 'http://127.0.0.1:18090' ],
        csrf: {
            enable: false,
        },
    };
    config.cors = {
        origin: ['http://127.0.0.1:8000']
    }
    return {
        ...config,
        ...userConfig,
    };
};
